package cn.iocoder.yudao.module.system.service.ai;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.ai.vo.AiAdmissionCutoffScoreCreateReqVO;
import cn.iocoder.yudao.module.system.controller.admin.ai.vo.AiAdmissionCutoffScorePageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.ai.vo.AiAdmissionCutoffScoreUpdateReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.ai.AiAdmissionCutoffScoreDO;

import javax.validation.Valid;
import java.util.List;

/**
 * AI 录取分数线 Service 接口
 *
 * @author 芋道源码
 */
public interface AiAdmissionCutoffScoreService {

    /**
     * 创建AI 录取分数线
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createAiAdmissionCutoffScore(@Valid AiAdmissionCutoffScoreCreateReqVO createReqVO);

    /**
     * 更新AI 录取分数线
     *
     * @param updateReqVO 更新信息
     */
    void updateAiAdmissionCutoffScore(@Valid AiAdmissionCutoffScoreUpdateReqVO updateReqVO);

    /**
     * 删除AI 录取分数线
     *
     * @param id 编号
     */
    void deleteAiAdmissionCutoffScore(Long id);

    /**
     * 获得AI 录取分数线
     *
     * @param id 编号
     * @return AI 录取分数线
     */
    AiAdmissionCutoffScoreDO getAiAdmissionCutoffScore(Long id);

    /**
     * 获得AI 录取分数线分页
     *
     * @param pageReqVO 分页查询
     * @return AI 录取分数线分页
     */
    PageResult<AiAdmissionCutoffScoreDO> getAiAdmissionCutoffScorePage(AiAdmissionCutoffScorePageReqVO pageReqVO);

    /**
     * 根据院校名称获得AI 录取分数线列表
     *
     * @param schoolName 院校名称
     * @param province 省份
     * @param batchName 批次名称
     * @return AI 录取分数线列表
     */
    List<AiAdmissionCutoffScoreDO> getAiAdmissionCutoffScoreListBySchoolName(String schoolName, String province, String batchName);

    /**
     * 根据院校名称和科目类型获得AI 录取分数线列表
     *
     * @param schoolName 院校名称
     * @param type 科目类型
     * @param province 省份
     * @param batchName 批次名称
     * @return AI 录取分数线列表
     */
    List<AiAdmissionCutoffScoreDO> getAiAdmissionCutoffScoreListBySchoolNameAndType(String schoolName, String type, String province, String batchName);

    /**
     * 同步院校UUID
     * 从college表匹配并更新AI录取分数线表的schoolUuid字段
     * 使用学校名称变体匹配逻辑，支持不同括号格式
     *
     * @return 执行结果描述
     */
    String syncSchoolUuid();

}